﻿// 3634. IP地址.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;

/*

https://www.acwing.com/problem/content/3637/


输入一串字符，判断该字符串是否为点分十进制的 IP 地址，若是则转换为 16进制输出，否则输出 Error。

输入格式
一行字符串。

注意，输入可能是任意的一个字符串，比如 abc.bas.fefe.4r4 或者 23.23.11.23.123 这都是不合法的 IP 地址。

输出格式
按题目要求，输出一行结果。

数据范围
输入字符串长度不超过 100

输入样例1：
192.41.6.20
输出样例1：
0xC0290614
输入样例2：
257.32.23.1
输出样例2：
Error


176.160..177
*/

string s;
string ans;

map<int, string> mm= {
	{0, "0"}, { 1,"1" }, { 2,"2" }, { 3,"3" }, { 4,"4" }, { 5,"5" }, { 6,"6" }, { 7,"7" }, { 8,"8" }, { 9,"9" }, { 10,"A" },
	{ 11,"B" }, { 12,"C" }, { 13,"D" }, { 14,"E" }, { 15,"F" }};

void solve(vector<string > v) {
	ans = "0x";
	for (int i = 0; i < v.size(); i++) {
		string t = v[i];
		if (t == "") {
			cout << "Error" << endl; return;
		}
		int res = 0; string curr;
		for (int j = 0; j < t.size(); j++) {
			if (t[j] < '0' || t[j] >'9') {
				cout << "Error" << endl; return;
			}
			res = res * 10 + t[j] - '0';
		}
		if (res < 0 || res >255) {
			cout << "Error" << endl; return;
		}
		if (res == 0) {
			curr = "00";
		}
		else {
			while (res != 0) {
				int tmp = res % 16;
				res /= 16;
				curr += mm[tmp];
			}
		}
		
		if (curr.size() == 1) curr += "0";
		reverse(curr.begin(), curr.end());
		ans += curr;
	}
	while (ans.size() != 10) {
		ans.push_back('0');
	}
 
	cout << ans << endl;

}

int main()
{
	cin >> s;
	vector<string > v;

	int l = 0; int r = 0;
	while (l < s.size() && r < s.size()) {
		while (r < s.size() && s[r] != '.') r++;
		v.push_back(s.substr(l, r - l ));
		l = r + 1; r = l;
	}

	if (v.size() >  4) {
		cout << "Error" << endl; return 0;
	}

	solve(v);

	return 0;
}

 